Skip to content

Conversation

@tungmhoang
Copy link
Collaborator

@tungmhoang tungmhoang commented Aug 20, 2025

Summary

  • Added audio injection in manual session.

Related PRs, issues, or features (optional)

Metadata

  • Adds new file(s)
  • Edits existing file(s)
  • Removes file(s)

PR contributor checklist

Summary by CodeRabbit

  • Documentation
    • Added comprehensive audio injection guide for testing audio on connected devices with step-by-step instructions, supported formats, prerequisites, and troubleshooting tips.
    • Updated device control testing instructions to replace image-only injection with a broader media injection workflow and expanded audio testing guidance and visuals.
    • Added a new navigation entry under local/private devices for audio injection.
    • Added ability to download input, injected, and output audio tracks and metadata from sessions.

@coderabbitai
Copy link

coderabbitai bot commented Aug 20, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds a new Inject Audio guide and navigation link; replaces image-injection steps with a Media Injection workflow in device controls; expands microphone/audio testing instructions and visuals; and adds a "Download audio tracks and metadata" section to session management docs.

Changes

Cohort / File(s) Change Summary
Navigation Updates
docs/modules/manual-testing/nav.adoc
Added a navigation entry for inject-audio.adoc under "Local or private devices".
Device Control Instructions
docs/modules/manual-testing/pages/device-controls.adoc
Replaced Image Injection workflow with Media Injection; updated references to the new guide; expanded audio testing steps and visuals; added device-capability warning and alternative device suggestion.
New Audio Injection Guide
docs/modules/manual-testing/pages/local-devices/inject-audio.adoc
New page describing prerequisites, supported formats/limits (WAV PCM 16-bit / OGG / MP3; 8 kHz; mono; ≤30 MB), step-by-step Inject Media workflow, UI progress/status cues, session artifact review (Input/Injected/Output), tips, and troubleshooting.
Session Management
docs/modules/session-explorer/pages/manage-sessions.adoc
Updated Session Overview wording; added "Download audio tracks and metadata" subsection with IMPORTANT cross-reference to audio injection guide, instructions for downloading Input/Injected/Output audio, a NOTE that output capture is for calls only, and an illustrative image.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant UI as "Session UI / Inject Media"
  participant Bridge as "Bluetooth-bridge / Backend"
  participant Device as "Connected Device"
  participant Storage as "Session Artifacts"

  User->>UI: Start manual session → Open Inject Media
  UI->>Bridge: Upload audio (validate format/size)
  Bridge->>Device: Transmit audio via Bluetooth
  alt success
    Device-->>Bridge: Ack / playback started
    Bridge-->>UI: Progress & success
    Bridge->>Storage: Store Injected audio artifact
  else failure
    Bridge-->>UI: Error (format/connection/capability)
  end
  Note over UI,Storage: Post-session: UI exposes Input / Injected / Output downloads
Loading
sequenceDiagram
  autonumber
  actor Reviewer
  participant SessionUI as "Session Explorer"
  participant Storage as "Session Artifacts"

  Reviewer->>SessionUI: Open session -> Download Audio Tracks
  SessionUI->>Storage: Request Input/Injected/Output files & metadata
  Storage-->>SessionUI: Return files (Output only for calls)
  SessionUI-->>Reviewer: Provide download links & notes
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Verify accuracy of supported audio formats, sample rate, channel, and size limits in inject-audio.adoc.
  • Confirm cross-reference links and image paths in nav.adoc, device-controls.adoc, and manage-sessions.adoc.
  • Validate that updated device-control steps, warnings, and visuals align with actual UI behavior and Bluetooth-bridge constraints.

Poem

🐰
I hop with a file held tight,
Whispering sound into the night.
Injected beats and session tunes,
Docs now dance beneath the moons.
Hooray — the audio sings just right! 🎧

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title 'Audio injection' directly and specifically describes the main feature being added—comprehensive documentation for audio injection functionality in manual sessions.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch audio-injection

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ddb4c8a and 834fecc.

📒 Files selected for processing (1)
  • docs/modules/manual-testing/pages/local-devices/inject-audio.adoc (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/modules/manual-testing/pages/local-devices/inject-audio.adoc
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: publish-docs-test
  • GitHub Check: Test Build

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@tungmhoang tungmhoang marked this pull request as ready for review October 29, 2025 11:32
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
docs/modules/manual-testing/pages/local-devices/inject-audio.adoc (1)

76-90: Troubleshooting table covers key failure modes.

The troubleshooting section addresses three common scenarios: disabled button, missing button, and no audio recorded. The resolutions are detailed and go beyond surface-level suggestions (e.g., "unmute microphone" and "verify app is recording") to address root causes. However, one resolution could be expanded slightly for clarity:

Line 87–88: "Make sure the target app is actively recording or listening when you click Inject." This is clear, but you might also mention that some apps may require explicit permission grants before they can capture audio.

Overall, the troubleshooting content is comprehensive and appropriate for a beta feature.

Consider adding a line in the troubleshooting table's "No audio recorded" resolution about verifying app permissions (e.g., microphone access). This can help users troubleshoot platform-specific permission issues that may block audio capture.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d5a5f69 and 7842c1c.

⛔ Files ignored due to path filters (13)
  • docs/modules/manual-testing/images/bluetooth-audio-device-filter.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-devices.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-file-finder.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-injecting.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-injection-closeup.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-injection-empty.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-injection-uploaded.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-not-enabled.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/bluetooth-audio-session-overview.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/image-injection-closeup.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/image-injection-completed.png is excluded by !**/*.png
  • docs/modules/manual-testing/images/media-injection.png is excluded by !**/*.png
  • docs/modules/session-explorer/images/audio-tracks-download.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • docs/modules/manual-testing/nav.adoc (1 hunks)
  • docs/modules/manual-testing/pages/device-controls.adoc (1 hunks)
  • docs/modules/manual-testing/pages/local-devices/inject-audio.adoc (1 hunks)
  • docs/modules/session-explorer/pages/manage-sessions.adoc (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-05T04:25:21.053Z
Learnt from: tungmhoang
PR: kobiton/docs#277
File: docs/modules/automation-testing/pages/get-a-session-id/using-the-kobiton-portal.adoc:16-16
Timestamp: 2025-06-05T04:25:21.053Z
Learning: In Kobiton documentation, "Session Overview" terminology is still appropriate when referring to the overview section/view within Session Explorer, even when other parts of the documentation use "Session Explorer" terminology.

Applied to files:

  • docs/modules/session-explorer/pages/manage-sessions.adoc
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: publish-docs-test
  • GitHub Check: publish-docs-test
🔇 Additional comments (10)
docs/modules/manual-testing/nav.adoc (1)

14-14: Navigation link correctly placed and formatted.

The new link to inject-audio.adoc is positioned appropriately within the "Local or private devices" section and uses consistent xref syntax with other navigation entries.

docs/modules/session-explorer/pages/manage-sessions.adoc (2)

16-16: Clearer session overview description.

The updated text concisely conveys the purpose of the Session Overview window. The phrasing "view more details and manage the session" is more user-centric than the prior version.


73-93: New audio tracks subsection is well-structured and clear.

The new "Download audio tracks and metadata" subsection is logically placed after the Applitools section and integrates smoothly into the session management workflow. The IMPORTANT callout appropriately directs users to the detailed audio injection guide. The distinction between Input, Injected, and Output audio is clear. The NOTE about audio output limitations (calls only) is a helpful scope clarifier.

Cross-reference path xref:manual-testing:local-devices/inject-audio.adoc aligns with the new documentation page. Retrieved learning confirms "Session Overview" terminology is appropriate in this context.

Verify that the external link to the Kobiton audio samples repository (https://github.com/kobiton/samples/tree/master/audio) is active and references valid sample code for audio injection.

docs/modules/manual-testing/pages/device-controls.adoc (2)

82-99: Image injection section refactored to Media Injection workflow.

The "Image injection" section now correctly positions image injection under the "Media Injection" umbrella, making the UI workflow clearer to users. The added IMPORTANT note directs readers to the test-your-app-camera.adoc guide for detailed image injection instructions, which is appropriate for a device controls reference.

The step-by-step flow (select Media Injection → select Image Injection tab → upload/inject) is now explicit and matches the parallel audio injection workflow below.


101-118: Audio injection section updated consistently with Media Injection pattern.

The audio injection section now mirrors the image injection workflow structure, promoting consistency and reducing cognitive load for users toggling between the two features. The IMPORTANT note correctly references xref:manual-testing:local-devices/inject-audio.adoc for comprehensive audio injection guidance.

The conditional error message (line 116) and reference to device filtering (line 116) are practical additions that help users troubleshoot when audio injection is unavailable. The cross-reference to the inject-audio guide from the error path provides helpful context.

Confirm that image references (media-injection.png, bluetooth-audio-injection-closeup.png, bluetooth-audio-not-enabled.png) exist in the documentation assets and that the cross-references to test-your-app-camera.adoc and local-devices/inject-audio.adoc are correct.

docs/modules/manual-testing/pages/local-devices/inject-audio.adoc (5)

1-13: Clear title and prerequisites section.

The page title appropriately marks this as "Beta" functionality, and the intro clearly frames the use case. The prerequisites are comprehensive and appropriately flag the bluetooth-bridge server dependency with an IMPORTANT note. One small clarity suggestion: while "Standard mode" is mentioned, users unfamiliar with Kobiton's session modes may benefit from a brief clarification or link explaining what distinguishes "Standard mode" from other modes.

Verify that there is documentation explaining Kobiton's session modes (Standard, Mixed, etc.) so readers can understand the mode requirement without external knowledge. If such documentation exists, consider adding a cross-reference.


15-25: Supported audio format table is clear and comprehensive.

The format specifications are well-organized in table form. The constraints are specific and actionable: 8 kHz sample rate, 16-bit depth, mono channels, and 30 MB max size. Supporting WAV, OGG, and MP3 containers covers common formats.


27-49: Workflow is well-sequenced with clear progression.

The five-step injection workflow progresses logically: device selection → open UI → upload file → stage app → trigger injection. Each step includes an image, making this section highly scannable. The use of concrete example filenames (sample.wav) and realistic UI states (empty → uploaded → injecting → confirmed) helps users follow along.

The step instructing users to "open the target application on the device" before injecting (line 41) is pragmatic and helps users avoid a common failure mode.


51-59: Session artifacts section correctly references Session Overview.

The "Reviewing session artifacts" section appropriately cross-references the Session Overview page (file 2) and mirrors the audio track definitions provided there, creating a coherent narrative: inject audio in manual session → artifacts are captured → download from Session Overview. The distinction between Input, Injected, and Output audio is consistent across both documents.


61-74: Tips & best practices are practical and specific.

The three tips (filter devices, verify format, stage app) are actionable and address the most common pain points. The device filter tip includes specific UI navigation ("Audio → Supported"), making it easy to execute. The format verification tip provides actionable conversion guidance (8 kHz, 16-bit, mono PCM WAV).

Copy link

@rohan-kobiton rohan-kobiton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - just came across this and figured I would give me thoughts. I have a few comments about the 3 formats and specifics.

Also an additional recommendation - for images and large files on github it is good practice to use LFS https://git-lfs.com/ . It keeps your repo from getting bloated and from slowing down pulls/pushes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants